Field of the Invention
Embodiments in accordance with the present disclosure relate to computer networks, and particularly to processing domain name system (DNS) information.
Description of the Related Art
Network resources such as those available via the Internet are accessed according to Internet Protocol (IP) addresses. IP addresses are represented numerically, traditionally as a quartet of values having the form 111.111.111.111. From the early inception of network computing, familiar alphanumeric name-based addressing has been used to allow users to more easily locate and remember the addresses for resources. For example, domain names are assigned to computing servers and clients. The domain name system facilitates the translation between IP addresses and domain names by maintaining accessible records that associate one or more domain names with one or more IP addresses.
While early network implementations could utilize a single periodically distributed ASCII file to translate between domain names and IP addresses, modern networks such as the Internet rely on the domain name system (DNS) for the resolution of names and addresses. FIG. 1 is a simplified block diagram illustrating traditional DNS processing. A client computing device 102 includes a resolver 104 for initiating DNS requests. The resolver may be a standalone component such as a software module of the client, or may be embedded within various applications such as web browsers, file transfer protocol programs, email applications, and the like that utilize Internet resources. When the client requests an Internet resource such as a web page or delivery of an email message, the resolver is charged with determining the IP address(es) of the requested resource so that the appropriate request can be issued to the appropriate address. The resolver is traditionally configured with the addresses of a group of ISP DNS nameservers 110 that handle recursive DNS processing for the client device. As is often the case, the group of nameservers is provided by the Internet Service Provider (ISP) for the client device, although this isn't required. Nameservers 110 are recursive nameservers which resolve DNS requests using a recursive process that accesses various other nameservers in order to satisfy a given query.
Consider an example DNS request 150 from client 102 to nameserver 112 for the domain name information of “www.opendns.com”. The ISP DNS nameserver first checks a local cache to attempt to resolve the request. The ISP DNS nameserver maintains the local cache with domain name records that have already been resolved to improve performance in responding to subsequent DNS requests. If nameserver 112 is maintaining the requested domain name in the local cache, it will issue a DNS response 152 to the client with the domain name record including the IP address of “www.opendns.com”.
If the ISP DNS nameserver 112 does not have an entry for the requested domain name, it will launch recursive processing using authoritative DNS nameservers 120 and/or root DNS nameservers 130. An authoritative nameserver maintains an authoritative or master list for a zone which is a group of computing devices. Recursive DNS nameservers obtain domain name information such as the IP address of a requested resource from authoritative nameservers. The root DNS nameservers are also authoritative DNS nameservers. They are called root DNS nameservers because they contain the authoritative domain name information for a set of top level domains (TLDs) in the so-called root zone. For example, the root DNS nameservers contain the IP addresses for finding domain name information for lower level domains in the top level domains. The top level domains include the generic top-level domains (gTLD) of .com, .org, .net, etc.
Nameserver 112 first issues a DNS request 154 to root DNS nameservers 130. The root DNS nameservers 130 can include multiple nameservers, one or more of which can be issued a request for the needed information. One of the nameservers 132 responds with a DNS response 156 including the IP address of one or more authoritative nameservers for the “.com” domain. When ISP DNS nameserver 112 obtains the IP address for the “.com” domain, it issues another DNS request 158 to the specified one of the authoritative DNS nameservers 120. The specified authoritative nameserver will issue a DNS response 160 with the IP address of one or more nameservers for the “opendns.com” domain. This process repeats between the ISP DNS nameserver and the authoritative nameservers 120 until the ISP DNS nameserver receives the IP address for “www.opendns.com”. The client 102 application can then issue the resource request to the appropriate computer, such as an HTTP request to the server at the corresponding IP address.
FIG. 2 is a simplified block diagram of a typical authoritative DNS nameserver 120 as shown in FIG. 1 that can store domain name records. In this example, the authoritative DNS nameserver 120 is a computer system with a processor 250 coupled to a communications interface 260 and a memory or storage 270 via a system bus 252. The communications interface 160 exchanges data with a communications network, such as the Internet, via line 154. The processor 250 receives DNS requests from the Internet and resolves the DNS requests based on domain name records, such as a DNS record 280 stored in memory 270. The DNS record 280 includes a domain name 282, which is used as a key to lookup a corresponding IP address 284, and includes a time-to-live (TTL) value 286. The TTL value for the DNS record can be set by the administrator of the authoritative DNS nameserver. The TTL value is provided as part of the DNS response to DNS requests and is used by the receiving nameservers to control how long the DNS record should be maintained and treated as valid.
Traditional network processing may use a proxy server to route or process network traffic on behalf of client devices. Network resource requests for a target domain name may be received by the proxy server from a client device. The proxy server attempts to identify the originally intended destination address for the client request. If the original destination can be determined, the proxy server can issue a request to the target IP address on behalf of the client. Sometimes, however, the proxy server may be unable to determine the original destination address. Request headers in HTTP traffic, for example, will often contain the destination IP address or an indication of the destination IP address. For other network protocols and sometimes for HTTP traffic as well, no indication of the destination IP address can be determined and the proxy server may be forced to drop the network traffic.